// Package sysin
// @Link  https://github.com/bufanyun/hotgo
// @Copyright  Copyright (c) 2024 HotGo CLI
// @Author  Ms <133814250@qq.com>
// @License  https://github.com/bufanyun/hotgo/blob/master/LICENSE
// @AutoGenerate Version 2.13.1
package sysin

import (
	"context"
	"hotgo/internal/model/entity"
	"hotgo/internal/model/input/form"

	"github.com/gogf/gf/v2/frame/g"
)

// StockEmotionUpdateFields 修改市场情绪值字段过滤
type StockEmotionUpdateFields struct {
	Ztjs   int    `json:"ztjs"   dc:"涨停家数"`
	Strong int    `json:"strong" dc:"强度"`
	Date   string `json:"date"   dc:"日期"`
	Lbgd   int    `json:"lbgd"   dc:"连扳高度"`
	DmNum  int    `json:"dmNum"  dc:"亏钱效应"`
	Dtjs   int    `json:"dtjs"   dc:"跌停家数"`
}

// StockEmotionInsertFields 新增市场情绪值字段过滤
type StockEmotionInsertFields struct {
	Ztjs   int    `json:"ztjs"   dc:"涨停家数"`
	Strong int    `json:"strong" dc:"强度"`
	Date   string `json:"date"   dc:"日期"`
	Lbgd   int    `json:"lbgd"   dc:"连扳高度"`
	DmNum  int    `json:"dmNum"  dc:"亏钱效应"`
	Dtjs   int    `json:"dtjs"   dc:"跌停家数"`
}

// StockEmotionEditInp 修改/新增市场情绪值
type StockEmotionEditInp struct {
	entity.StockEmotion
}

func (in *StockEmotionEditInp) Filter(ctx context.Context) (err error) {
	// 验证涨停家数
	if err := g.Validator().Rules("required").Data(in.Ztjs).Messages("涨停家数不能为空").Run(ctx); err != nil {
		return err.Current()
	}

	// 验证日期
	if err := g.Validator().Rules("required").Data(in.Date).Messages("日期不能为空").Run(ctx); err != nil {
		return err.Current()
	}

	return
}

type StockEmotionEditModel struct{}

// StockEmotionDeleteInp 删除市场情绪值
type StockEmotionDeleteInp struct {
	Id interface{} `json:"id" v:"required#id不能为空" dc:"id"`
}

func (in *StockEmotionDeleteInp) Filter(ctx context.Context) (err error) {
	return
}

type StockEmotionDeleteModel struct{}

// StockEmotionViewInp 获取指定市场情绪值信息
type StockEmotionViewInp struct {
	Id int `json:"id" v:"required#id不能为空" dc:"id"`
}

func (in *StockEmotionViewInp) Filter(ctx context.Context) (err error) {
	return
}

type StockEmotionViewModel struct {
	entity.StockEmotion
}

// StockEmotionListInp 获取市场情绪值列表
type StockEmotionListInp struct {
	form.PageReq
	Id   int    `json:"id" dc:"id"`
	Date string `json:"date" dc:"date"`
}

func (in *StockEmotionListInp) Filter(ctx context.Context) (err error) {
	return
}

type StockEmotionListModel struct {
	Id     int    `json:"id"     dc:"id"`
	Ztjs   int    `json:"ztjs"   dc:"涨停家数"`
	Strong int    `json:"strong" dc:"强度"`
	Date   string `json:"date"   dc:"日期"`
	Lbgd   int    `json:"lbgd"   dc:"连扳高度"`
	DmNum  int    `json:"dmNum"  dc:"亏钱效应"`
	Dtjs   int    `json:"dtjs"   dc:"跌停家数"`
}

// StockEmotionExportModel 导出市场情绪值
type StockEmotionExportModel struct {
	Id     int    `json:"id"     dc:"id"`
	Ztjs   int    `json:"ztjs"   dc:"涨停家数"`
	Strong int    `json:"strong" dc:"强度"`
	Date   string `json:"date"   dc:"日期"`
	Lbgd   int    `json:"lbgd"   dc:"连扳高度"`
	DmNum  int    `json:"dmNum"  dc:"亏钱效应"`
	Dtjs   int    `json:"dtjs"   dc:"跌停家数"`
}
